/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package util.www.sql;

import java.math.BigDecimal;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import util.www.sql.domain.Valor;

/**
 *
 * @author Rdelacruz
 */
@Deprecated //Usar util.form.Registro
public class RegistroSql {
    private final String nombreTabla;
    
    protected final List<Valor> valoresClave = new ArrayList<Valor>();
    protected final List<Valor> valores = new ArrayList<Valor>();
    
    public RegistroSql(String nombreTabla) {
        this.nombreTabla = nombreTabla;
    }
    
    public String getSelectClaveSql() throws SQLException {
        return "select * from "+nombreTabla+" "+getWhereClaveSql();
    }
    
    public String getWhereClaveSql() throws SQLException {
        WhereSqlEstaticoCond w = new WhereSqlEstaticoCond();
        for(Valor v: valoresClave) {
            w.agregar(v.getColumna(),v.getValorSql(), false);
        }
        return w.getAnd();
    }
    
    public void agregar(String columna, String valor) {               
        agregarValor(valores,columna,valor,String.class);
    }
    public void agregarClave(String columna, String valor) throws SQLException {  
        if(valor==null)
            throw new SQLException("Un valor clave no puede ser nulo");
        agregarValor(valoresClave,columna,valor,String.class);
    }
    
    public void agregar(String columna, Integer valor) {
        agregarValor(valores,columna,valor,Integer.class);
    }
    
    public void agregar(String columna, Boolean valor) {
        agregarValor(valores,columna,valor,Boolean.class);
    }
    
    public void agregar(String columna, BigDecimal valor) {
        agregarValor(valores,columna,valor,BigDecimal.class);
    }
    
    private void agregarValor(final List<Valor> valores, String columna, Object valor, Class claseValor) {
        Valor v = new Valor();
        v.setColumna(columna);
        v.setClaseValor(claseValor);
        v.setValor(valor);
        valores.add(v);
    }

    public String getNombreTabla() {
        return nombreTabla;
    }

    

     
    
}
